home *** CD-ROM | disk | FTP | other *** search
/ Chip: Internet / Chip Internet.iso / wwwutil / hotjava.ins / hotjava.exe / hotjava / classsrc / awt / StringDialog.java < prev    next >
Text File  |  1995-08-11  |  7KB  |  252 lines

  1. /*
  2.  * @(#)StringDialog.java    1.8 95/02/22 95/01/13 Herb Jellinek
  3.  *
  4.  * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * Permission to use, copy, modify, and distribute this software
  7.  * and its documentation for NON-COMMERCIAL purposes and without
  8.  * fee is hereby granted provided that this copyright notice
  9.  * appears in all copies. Please refer to the file "copyright.html"
  10.  * for further important copyright and licensing information.
  11.  *
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
  13.  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  14.  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  15.  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
  16.  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  17.  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
  18.  */
  19.  
  20. package awt;
  21.  
  22. /**
  23.  * StringDialog is a class that presents a dialog box to the
  24.  * user.  It contains a picture (well, not yet!), a message, a text input
  25.  * area, and up to three buttons: ok, cancel, and help.  The number
  26.  * of buttons and the button labels can be controlled by the API.
  27.  * The contents of the text field can be retrieved through it.
  28.  *
  29.  * @see DialogHandler
  30.  * @version 1.8 22 Feb 1995
  31.  * @author Herb Jellinek
  32.  */
  33. public
  34. class StringDialog extends Frame implements Dialog, DialogHandler {
  35.  
  36.     public static int stdWidth  = 300;
  37.     public static int stdHeight = 150;
  38.     
  39.     /** The handler object that gets invoked to handle actions. */
  40.     DialogHandler handler;
  41.  
  42.     /** The "OK" button label */
  43.     String okLabel;
  44.     
  45.     /** The "Cancel" button label */
  46.     String cancelLabel;
  47.     
  48.     /** The "Help" button label */
  49.     String helpLabel;
  50.  
  51.     /** Is this a modal dialog? */
  52.     boolean isModal;
  53.  
  54.     /** This window's title */
  55.     String title;
  56.  
  57.     /** The Label that holds the message. */
  58.     Label message;
  59.  
  60.     /** The text field. */
  61.     SelectingTextField textInput;    
  62.  
  63.     /** The OK button. */
  64.     Button okButton = null;
  65.  
  66.     /** The Cancel button. */
  67.     Button cancelButton = null;
  68.  
  69.     /** The Help button. */
  70.     Button helpButton = null;
  71.  
  72.     /** The Button that was chosen. Only valid for modal dialogs.*/
  73.     int chosenButton;
  74.  
  75.     /**
  76.      * Constructs a new StringDialog.
  77.      * @param f is the frame that is to be the parent of this StringDialog.
  78.      * @param title is the title of the dialog. It can be null.
  79.      * @param message is the message to display in the dialog. It can
  80.      * be changed later with setMessage.
  81.      * @param dialogType is one of INFO_TYPE (for information
  82.      * dialogs), ERROR_TYPE (for an error dialog), or QUESTION_TYPE (for
  83.      * a question dialog).  !! Currently ignored !!
  84.      * @param nButtons is the number of buttons to use. It is a number
  85.      * from 1 to 3. The number corresponds to whether the buttons should
  86.      * be ok (1), ok and cancel (2), or ok, cancel, and help (3).
  87.      * @param isModal determines whether the dialog will block all
  88.      * user input until the dialog is disposed of by clicking one of
  89.      * the ok or cancel buttons.  !! Currently ignored !!
  90.      * @param okLabel is the label to use for the Ok button. If null,
  91.      * then a default string will be chosen.
  92.      * @param cancelLabel is the label to use for the Ok button. If null,
  93.      * then a default string will be chosen.
  94.      * @param helpLabel is the label to use for the Ok button. If null,
  95.      * then a default string will be chosen.
  96.      * @param initialText is the text to preload into the text input field.
  97.      * If null, field will be empty.
  98.      * @param handler is the object that will handle the callbacks for
  99.      * the buttons listed in the dialog. It may be null in which case
  100.      * a default action is taken for all the buttons.
  101.      */
  102.     public StringDialog(Frame f, Font font,
  103.             String title, String messageStr,
  104.             boolean wantHelp, boolean isModal,
  105.             String okLabel, String cancelLabel, String helpLabel,
  106.             String initialText, DialogHandler handler) {
  107.     super(f.wServer, true, isModal, f, stdWidth, stdHeight, Color.lightGray);
  108.     setTitle(title);
  109.     setDefaultFont(font);
  110.     this.isModal = isModal;
  111.     this.handler = handler;
  112.     
  113.     Window guts = new Window(this, "North", background,
  114.                  stdWidth, stdHeight);
  115.     guts.setLayout(RowColLayout.oneColumn);
  116.     
  117.     message = new Label(messageStr, "message", guts);
  118.     message.setHFill(true);
  119.  
  120.     textInput = new SelectingTextField((initialText == null) ?
  121.                        "" : initialText,
  122.                        "textInput", guts, this, this);
  123.     textInput.setHFill(true);
  124.  
  125.     Window buttons = new Window(this, "South", background, stdWidth, 100);
  126.     okButton = new DialogOKButton(okLabel, "okButton", buttons, this);
  127.     cancelButton = new DialogCancelButton(cancelLabel, "cancelButton",
  128.                           buttons, this);
  129.     if (wantHelp) {
  130.         helpButton = new DialogHelpButton(helpLabel, "helpButton", buttons,
  131.                           this);
  132.     }
  133.     }
  134.  
  135.  
  136.     /** Set this dialog's handler. */
  137.     public void setHandler(DialogHandler dh) {
  138.     handler = dh;
  139.     }
  140.  
  141.     /** Change the message associated with this dialog. */
  142.     public void setMessage(String msg) {
  143.     message.setText(msg);
  144.     }
  145.  
  146.     /** Get the text from the text input field. */
  147.     public String getText() {
  148.     return textInput.getText();
  149.     }
  150.  
  151.     /** Set the text in the text input field. */
  152.     public void setText(String text) {
  153.     textInput.setText(text);
  154.     }    
  155.  
  156.     /** Show this dialog.
  157.      * @returns the number of the button that was pressed if this
  158.      * dialog is modal. Otherwise -1 is returned.
  159.      */
  160.     public int show() {
  161.     map();
  162.     if (isModal) {
  163.         return chosenButton;
  164.     } else {
  165.         return -1;
  166.     }
  167.     }
  168.  
  169.     /** Hide this dialog */
  170.     public void hide() {
  171.     unMap();
  172.     }
  173.  
  174.     /** Dispose of this dialog. */
  175.     public void dispose() {
  176.     }
  177.  
  178.     /* DialogHandler methods */
  179.  
  180.     /** Invoked when the user presses the "Ok" button. */
  181.     public void okCallback(Dialog m) {
  182.     chosenButton = 1;
  183.     if (handler == null) {
  184.         m.hide();
  185.     } else {
  186.         handler.okCallback(m);
  187.     }
  188.     }
  189.  
  190.     /** Invoked when the user presses the "Cancel" button. */
  191.     public void cancelCallback(Dialog m) {
  192.     chosenButton = 2;
  193.     if (handler == null) {
  194.         m.hide();
  195.     } else {
  196.         handler.cancelCallback(m);
  197.     }
  198.     }
  199.  
  200.     /** Invoked when the user presses the "Help" button. */
  201.     public void helpCallback(Dialog m) {
  202.     if (handler == null) {
  203.         System.out.println("No help available.");
  204.     } else {
  205.         handler.helpCallback(m);
  206.     }
  207.     }
  208. }
  209.  
  210.     
  211. class DialogOKButton extends Button {
  212.     StringDialog dialog;
  213.     
  214.     public DialogOKButton(String label, String name, Window p,
  215.               StringDialog d) {
  216.     super(label, name, p);
  217.     dialog = d;
  218.     }
  219.  
  220.     public void selected(Component c, int pos) {
  221.     dialog.okCallback(dialog);
  222.     }
  223. }
  224.  
  225. class DialogCancelButton extends Button {
  226.     StringDialog dialog;
  227.     
  228.     public DialogCancelButton(String label, String name, Window p,
  229.                   StringDialog d) {
  230.     super(label, name, p);
  231.     dialog = d;
  232.     }
  233.  
  234.     public void selected(Component c, int pos) {
  235.     dialog.cancelCallback(dialog);
  236.     }
  237. }
  238.  
  239. class DialogHelpButton extends Button {
  240.     StringDialog dialog;
  241.     
  242.     public DialogHelpButton(String label, String name, Window p,
  243.                 StringDialog d) {
  244.     super(label, name, p);
  245.     dialog = d;
  246.     }
  247.  
  248.     public void selected(Component c, int pos) {
  249.     dialog.helpCallback(dialog);
  250.     }
  251. }
  252.